package Controler.Stage;

import java.io.IOException;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import JDBC.AfficherMatiere;
import JDBC.AfficherNiveau;
import JDBC.Cours_Afficher;
import JDBC.Cours_Supprimer;
import JDBC.Eleve_Afficher;
import JDBC.Professeur_Afficher;
import JDBC.Stage_Afficher;
import JDBC.Stage_Supprimer;
import Model.Cours;
import Model.Eleve;
import Model.Listes;
import Model.Matiere;
import Model.Niveau;
import Model.Professeur;
import Model.Stage;

/**
 * Servlet implementation class Stage_ChoixAfficherController
 */
@WebServlet("/Stage_ChoixAfficherController")
public class Stage_ChoixAfficherController extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Stage_ChoixAfficherController() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
			HttpSession session = request.getSession();
			Listes listes = (Listes) session.getAttribute("listes");
			
			if (listes==null)
			{
				listes = new Listes();
			}
			
			Stage_Afficher listeStage = new Stage_Afficher();
			ArrayList<Stage> mesStages = listeStage.afficherStage();
			listes.setMesStages(mesStages);
			session.setAttribute("listes", listes);
			request.getRequestDispatcher("Vues/VuesGrp3/vueGRP3_AfficheStage.jsp").forward(request, response);
		}
	

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		{
			String url = "Vues/VuesGrp3/vueGRP3_AfficheStage.jsp";
			
			HttpSession session = request.getSession();
			Listes listes = (Listes) session.getAttribute("listes");
			int idStage2=0;
			if (listes==null)
			{
				listes = new Listes();
			}
			
			AfficherMatiere listeMatieres = new AfficherMatiere();
			ArrayList<Matiere> mesMatieres = listeMatieres.afficherMatiere();
			listes.setMesMatieres(mesMatieres);
			
			AfficherNiveau listeNiveaux = new AfficherNiveau();
			ArrayList<Niveau> mesNiveaux = listeNiveaux.afficherNiveau();
			listes.setMesNiveaux(mesNiveaux);
			
			
			Professeur_Afficher listeProfs = new Professeur_Afficher();
			ArrayList<Professeur> mesProfs = listeProfs.afficherIntervenant();
			listes.setMesProfesseurs(mesProfs);
			
			
			if(request.getParameter("ajout")!=null)
			{
				url="Vues/VuesGrp3/vueGRP3_CreationStage.jsp";
			}

			ArrayList<String> ListeID = new ArrayList<String>();
			String all = request.getParameter("nbStage");
			int nbStage=0;
			if(all!=null)
			{
				nbStage = Integer.parseInt(all);
			}
			boolean modifier = false;
			
			String stageModifier=null;
			String idStage=null;
			
			if(request.getParameter("suppression")==null)
			{
				for (int i = 0; i < nbStage; i++) 
				{
					String bouton = request.getParameter(String.valueOf(i));
					if(bouton!=null)
					{
						stageModifier=bouton;
						modifier=true;
					}
				}
				
				if(modifier)
				{
					if(stageModifier.length()==12)
					{
						idStage=stageModifier.substring(11, 12);
					}
					if(stageModifier.length()==13)
					{
						idStage=stageModifier.substring(11, 13);
					}
					if(stageModifier.length()==14)
					{
						idStage=stageModifier.substring(11, 14);
					}
					if(stageModifier.length()==15)
					{
						idStage=stageModifier.substring(11, 15);
					}
			
					Stage_Afficher stage = new Stage_Afficher();
					Stage s = stage.afficherStage(Integer.parseInt(idStage));
					listes.setStage(s);
					listes.setIdModifie(Integer.parseInt(idStage));
					session.setAttribute("listes", listes);
					url="Vues/VuesGrp3/vueGRP3_ModificationStage.jsp";
				}
			}
			if(request.getParameter("suppression")!=null)
			{
				for (int i = 0; i < nbStage; i++) 
				{
					String checkbox = request.getParameter(String.valueOf(i));
					if(checkbox!=null)
					{
						ListeID.add(checkbox);
					}
				}
				
				Stage_Supprimer suppression = new Stage_Supprimer();
				suppression.supprimer(ListeID);
				Stage_Afficher listeStages = new Stage_Afficher();
				ArrayList<Stage> mesStages = listeStages.afficherStage();
				listes.setMesStages(mesStages);
				session.setAttribute("listes", listes);
				url="Vues/VuesGrp3/vueGRP3_AfficheStage.jsp";
			}
			
			 
			
			if(request.getParameter("afficherEleve")!=null)
			{
				Stage_Afficher listeStages = new Stage_Afficher();
				ArrayList<Stage> mesStages = listeStages.afficherStage();
				
				for (int i=0;i<mesStages.size();i++)
				{
					Stage stage;
					if (mesStages.get(i).getIdStage()==Integer.parseInt(request.getParameter("afficherEleve")))
					{
						stage=mesStages.get(i);
						idStage2=stage.getIdStage();
					}
				}
				Stage_Afficher listeEleves= new Stage_Afficher();
				ArrayList<Eleve> mesEleves=listeEleves.afficherEleve(idStage2);
				listes.setMesEleves(mesEleves);
				session.setAttribute("listes", listes);
				url="Vues/VuesGrp3/vueGRP3_AfficheElevesStage.jsp";
			
			}
			
			if(request.getParameter("afficherStage")!=null)
			{
				Stage s = new Stage();
				
				Stage_Afficher listeStages = new Stage_Afficher();
				ArrayList<Stage> mesStages = listeStages.afficherStage();
				
				for (int i=0;i<mesStages.size();i++)
				{
					Stage stage;
					if (mesStages.get(i).getIdStage()==Integer.parseInt(request.getParameter("afficherStage")))
					{
						stage=mesStages.get(i);
						idStage2=stage.getIdStage();
					}
				}
				
				s = listeStages.afficherStage(idStage2);
				
				session.setAttribute("stage", s);
				url="Vues/VuesGrp3/vueGRP3_afficheStageDetail.jsp";
			
			}
			
		
			request.getRequestDispatcher(url).forward(request, response);
		}

}
}
